package graph.搜索算法;

/**
 * 图的DFS算法实现  递归和非递归
 *
 * 图的数据结构有许多类型，矩阵，邻接表，数组等(考虑无向图)
 *
 * 我们测试依次测定出上述三种图的结构，分别采用DFS的递归和非递归实现不同结构的图的遍历
 */

import java.util.HashMap;

/**
 * 矩阵存储图
 */
class MatrixGraph{
    int[][] graph; // 图

    public MatrixGraph(int[][] graph) {
        this.graph = graph;
    }

    public void addEdge(int point1,int point2) {
        graph[point1][point2] = 1;
        graph[point2][point1] = 1;
    }

    /**
     * 递归实现图的DFS遍历算法
     * @param start: 当前访问的起点
     */
    public void GraphDFS_recursion(char start) {
        StringBuilder temp = new StringBuilder();
    }
}

/**
 * 邻接表
 */
class AdjointTableGraph{

}

/**
 * 数组存储图，与矩阵类似，只不过为一维的
 */
class ArrayGraph{

}



@SuppressWarnings("all")
public class Q2_GraphDFS {
    public static void main(String[] args) {
        // 创建图
        int[][] matrix = new int[6][6]; // 节点数量为6
        HashMap<Character,Integer> map = new HashMap<>(); // 0-a 1-b 2-c 3-d 4-e 5-f
        // 生成节点与数字的映射表
        for (int i = 0; i < 6; i++) {
            map.put((char)(i+97),i);
        }
        // 创建以节点a,b,c,d,e,f为顶点的图  一共6个节点 8条边
        matrix[0][1] = 1; matrix[1][0] = 1;
        matrix[0][2] = 1; matrix[2][0] = 1;
        matrix[1][3] = 1; matrix[3][1] = 1;
        matrix[1][2] = 1; matrix[2][1] = 1;
        matrix[3][4] = 1; matrix[4][3] = 1;
        matrix[3][5] = 1; matrix[5][3] = 1;
        matrix[2][3] = 1; matrix[3][2] = 1;
        matrix[2][4] = 1; matrix[4][2] = 1;
    }
}
